package main.java.com.silence.service.impl;

import com.silence.dao.IUserDao;
import com.silence.pojo.User;
import com.silence.service.IUserService;
import com.silence.utils.MailUtils;
import com.silence.vo.LoginUser;
import org.springframework.stereotype.Service;


import javax.annotation.Resource;

/**
 * Author: silence
 * Date: 17-5-26.
 */
@Service("userService")
public class UserServiceImpl implements IUserService {

    @Resource
    private IUserDao userDao;

    /** 通过用户id 获取用户信息    */
    @Override
    public User findUserById(int id) {
        return this.userDao.selectByPrimaryKey(id);
    }

    /** 处理注册逻辑   */
    @Override
    public int register(User user) {
        // 1 用户信息存到数据库中
        int temp =  userDao.insert(user);

        // 如果数据插入失败 则返回0
        if (temp == 0)
            return 0;

        // 2 给用户发送激活邮箱
        boolean isSended = MailUtils.sendMail(user.getEmail(), user.getCode());

        // 3 邮件发送成功
        if (isSended)
            return temp;

        // 4 邮件发送失败 删除数据库中刚报插入的数据
        return 0;
    }

    /** 激活用户账户   */
    @Override
    public boolean activate(String code) {
        return userDao.updateStateByCode(code) == 1;
    }

    /** 通过用户email 获取用户信息     */
    @Override
    public User findUserByEmail(String email) {
        return userDao.selectByEmail(email);
    }

    /** 用户登录逻辑 */
    @Override
    public int login(LoginUser user) {

        // 从数据库中得到用户密码
        String password = userDao.selectPwdByEmail(user.getEmail());

        if (password == null){
            // 不存在该用户
            return 0;
        } else{
            // 存在该用户 判断密码是否正确
            if (password.equals(user.getPassword())){
                return 1; // 密码正确

            } else

                return -1;  // 密码错误
        }

    }

}
